home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / oleo-1_4.lha / oleo-1.4 / funcdef.h < prev    next >
C/C++ Source or Header  |  1993-01-01  |  7KB  |  157 lines

  1. #ifndef FUNCDEFH
  2. #define FUNCDEFH
  3. /*    Copyright (C) 1990, 1992, 1993 Free Software Foundation, Inc.
  4.  
  5. This file is part of Oleo, the GNU Spreadsheet.
  6.  
  7. Oleo is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2, or (at your option)
  10. any later version.
  11.  
  12. Oleo is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with Oleo; see the file COPYING.  If not, write to
  19. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21. /* Special macros designed to remove some __STDC__ ugliness from my source
  22.    files.  Instead, I use these (which may be just as ugly.  Instead of using
  23. extern foo();
  24.    or
  25. extern foo(int,double);
  26.    I use
  27. extern foo FUN2(int, double);
  28.    which is expanded to the right thing depending on whether you're using an
  29.    ANSI cc or not.
  30.  
  31.    Also, instead of saying
  32. type
  33. foo(x,y)
  34. int x;
  35. double y;
  36.    or
  37. type
  38. foo(int x, double y)
  39.    I use
  40. type
  41. foo FUN2(int, x, double, y)
  42. Which is also expanded into the right thing. . .
  43.  */
  44.  
  45. #ifdef __STDC__
  46. #include <stdarg.h>
  47. #define var_start(x,y) va_start(x,y)
  48.  
  49. /* These macros expand into ANSI prototypes */
  50. #define FUN0()        (void)
  51. #define EXT0()        (void)
  52.  
  53. #define FUN1(t1,a1)    (t1 a1)
  54. #define EXT1(t1)    (t1)
  55. #define FUN1N(t1,a1)    (t1 a1, ...)
  56. #define EXT1N(t1)    (t1, ...)
  57.  
  58. #define FUN2(t1,a1,t2,a2)    (t1 a1,t2 a2)
  59. #define EXT2(t1, t2)        (t1, t2)
  60. #define FUN2N(t1,a1,t2,a2)    (t1 a1,t2 a2, ...)
  61. #define EXT2N(t1, t2)        (t1, t2, ...)
  62.  
  63. #define FUN3(t1,a1,t2,a2,t3,a3)    (t1 a1, t2 a2, t3 a3)
  64. #define EXT3(t1, t2, t3)    (t1, t2, t3)
  65. #define FUN3N(t1,a1,t2,a2,t3,a3)(t1 a1, t2 a2, t3 a3, ...)
  66. #define EXT3N(t1, t2, t3)    (t1, t2, t3, ...)
  67.  
  68. #define FUN4(t1,a1,t2,a2,t3,a3,t4,a4)    (t1 a1, t2 a2, t3 a3, t4 a4)
  69. #define EXT4(t1, t2, t3, t4)        (t1, t2, t3, t4)
  70.  
  71. #define FUN5(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5)
  72. #define EXT5(t1, t2, t3, t4, t5)        (t1, t2, t3, t4, t5)
  73.  
  74. #define FUN6(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6)
  75. #define EXT6(t1, t2, t3, t4, t5, t6)            (t1, t2, t3, t4, t5, t6)
  76.  
  77. #define FUN7(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7)
  78. #define EXT7(t1, t2, t3, t4, t5, t6, t7)        (t1, t2, t3, t4, t5, t6, t7)
  79.  
  80. #define FUN8(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8)
  81. #define EXT8(t1, t2, t3, t4, t5, t6, t7, t8)            (t1, t2, t3, t4, t5, t6, t7, t8)
  82.  
  83. #define FUN9(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9)
  84. #define EXT9(t1, t2, t3, t4, t5, t6, t7, t8, t9)            (t1, t2, t3, t4, t5, t6, t7, t8, t9)
  85.  
  86. #define FUN10(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9, t10 a10)
  87. #define EXT10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)                (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)
  88.  
  89. #define FUN11(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9, t10 a10, t11 a11)
  90. #define EXT11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)                (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)
  91.  
  92. #define FUN12(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9, t10 a10, t11 a11, t12 a12)
  93. #define EXT12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)                (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)
  94.  
  95. #define FUN13(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13)    (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7, t8 a8, t9 a9, t10 a10, t11 a11, t12 a12, t13 a13)
  96. #define EXT13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)                (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)
  97.  
  98.  
  99. #else
  100. #include <varargs.h>
  101.  
  102. #define var_start(x,y) va_start(x)
  103.  
  104. /* These macros expand into old-style function definitions */
  105.  
  106. #define FUN0()    ()
  107. #define EXT0()    ()
  108.  
  109. #define FUN1(t1,a1)    (a1) t1 a1;
  110. #define EXT1(t1)    ()
  111. #define FUN1N(t1,a1)    (a1,va_alist) t1 a1; va_dcl
  112. #define EXT1N(t1)    ()
  113.  
  114. #define FUN2(t1,a1,t2,a2)    (a1, a2) t1 a1; t2 a2;
  115. #define EXT2(t1, t2)        ()
  116. #define FUN2N(t1,a1,t2,a2) (a1, a2,va_alist) t1 a1; t2 a2; va_dcl
  117. #define EXT2N(t1, t2)        ()
  118.  
  119. #define FUN3(t1,a1,t2,a2,t3,a3) (a1, a2, a3) t1 a1; t2 a2; t3 a3;
  120. #define EXT3(t1, t2, t3)    ()
  121. #define FUN3N(t1,a1,t2,a2,t3,a3) (a1, a2, a3, va_alist) t1 a1; t2 a2; t3 a3; va_dcl
  122. #define EXT3N(t1, t2, t3)    ()
  123.  
  124. #define FUN4(t1,a1,t2,a2,t3,a3,t4,a4)    (a1, a2, a3, a4) t1 a1; t2 a2; t3 a3; t4 a4;
  125. #define EXT4(t1, t2, t3, t4)        ()
  126.  
  127. #define FUN5(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) (a1, a2, a3, a4, a5) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5;
  128. #define EXT5(t1, t2, t3, t4, t5)    ()
  129.  
  130. #define FUN6(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) (a1, a2, a3, a4, a5, a6) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6;
  131. #define EXT6(t1, t2, t3, t4, t5, t6)    ()
  132.  
  133. #define FUN7(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) (a1, a2, a3, a4, a5, a6, a7) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7;
  134. #define EXT7(t1, t2, t3, t4, t5, t6, t7)    ()
  135.  
  136. #define FUN8(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8) (a1, a2, a3, a4, a5, a6, a7, a8) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8;
  137. #define EXT8(t1, t2, t3, t4, t5, t6, t7, t8)    ()
  138.  
  139. #define FUN9(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9) (a1, a2, a3, a4, a5, a6, a7, a8, a9) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9;
  140. #define EXT9(t1, t2, t3, t4, t5, t6, t7, t8, t9)    ()
  141.  
  142. #define FUN10(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9; t10 a10;
  143. #define EXT10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)    ()
  144.  
  145. #define FUN11(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9; t10 a10; t11 a11;
  146. #define EXT11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11)    ()
  147.  
  148. #define FUN12(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9; t10 a10; t11 a11; t12 a12;
  149. #define EXT12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12)    ()
  150.  
  151. #define FUN13(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7,t8,a8,t9,a9,t10,a10,t11,a11,t12,a12,t13,a13) (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; t8 a8; t9 a9; t10 a10; t11 a11; t12 a12; t13 a13;
  152. #define EXT13(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13)    ()
  153.  
  154.  
  155. #endif
  156. #endif
  157.